package test20230417;

/**
 * @author 兴趣使然黄小黄
 * @version 1.0
 * @date 2023/4/17 23:13
 */
public class Main01 {

    public static void main(String[] args) {
        // 使用测试一
        test01();
        // 使用测试二
        test02();
    }

    public static void test01() {
        // (1)利用空构造方法创建一个新的长方体对象cuboidA，
        //    然后利用setter方法设置长宽高分别为1.5、2.6和18.6
        Cuboid cuboidA = new Cuboid();
        cuboidA.setLength(1.5);
        cuboidA.setWidth(2.6);
        cuboidA.setHeight(18.6);
        // (2)调用printCuboid()方法输出cuboidA的基本信息，调用isCube()方法判断是否正方体
        cuboidA.printCuboid();
        System.out.println("是否为正方形? " + cuboidA.isCube());
    }

    public static void test02() {
        // (1)利用构造方法创建一个具有长宽高分别为2.5、6.8和8.0的长方体对象cuboidB，
        // 然后利用setLength()方法修改length为4.6；
        Cuboid cuboidB = new Cuboid(2.5, 6.8, 8.0);
        cuboidB.setLength(4.6);

        // (2))调用getCubage计算该长方体的体积。
        double cubage = cuboidB.getCubage();
        System.out.println("该长方体的体积为: " + cubage);
    }
}

// 长方体类
class Cuboid {
    private double length; // 长
    private double width; // 宽
    private double height; // 高

    // 初始化构造方法
    public Cuboid() {
    }

    // 初始化所有属性的构造方法
    public Cuboid(double length, double width, double height) {
//        this.length = length;
//        this.width = width;
//        this.height = height;
        // 构造方法中使用 setter 进行参数初始化, 进行参数合法性检验
        setLength(length);
        setWidth(width);
        setHeight(height);
    }

    public double getLength() {
        return length;
    }

    public void setLength(double length) {
        if (length > 0) {
            this.length = length;
        } else {
            System.out.println("length 不合法");
        }
    }

    public double getWidth() {
        return width;
    }

    public void setWidth(double width) {
        if (width > 0) {
            this.width = width;
        } else {
            System.out.println("width 不合法");
        }
    }

    public double getHeight() {
        return height;
    }

    public void setHeight(double height) {
        if (height > 0) {
            this.height = height;
        } else {
            System.out.println("height 不合法");
        }
    }

    // 计算体积 长 * 宽 * 高
    public double getCubage() {
        return length * width * height;
    }

    // 判断是否为正方体 -> 长宽高相同
    public boolean isCube() {
        return length == width && width == height;
    }

    // 输出该长方体的长宽高
    public void printCuboid() {
        System.out.println("长: " + length);
        System.out.println("宽: " + width);
        System.out.println("高: " + height);
    }
}